package com.hanserwei.mydemo.stream;

import java.util.stream.Stream;

public class GenerateTest3 {
    public static void main(String[] args) {
        System.out.println("使用数组记录状态（修正版）：");

        // 使用 Stream.iterate 而不是 IntStream.iterate
        Stream.iterate(new int[]{0, 1},
                        // 谓词，用于判断是否继续 (Java 9+)
                        // 防止整数溢出
                        arr -> arr[0] >= 0,
                        // 迭代函数：[a, b] -> [b, a+b]
                        arr -> new int[]{arr[1], arr[0] + arr[1]})
                .limit(10) // 取前10个
                // 流中的元素是 int[], 我们需要的是第一个数字
                // 使用 mapToInt 转换回 IntStream 以获得更好的性能
                .mapToInt(arr -> arr[0])
                .forEach(System.out::println);
    }

}
